package com.atguigu.gulimall.order.entity.vo;

import com.atguigu.entity.vo.MemberResponseVo;
import lombok.Data;
import lombok.Getter;
import lombok.Setter;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

public class OrderConfirmVo {

    //用户所有收货地址列表 gulimall_ums->ums_member_receive_address
    @Getter @Setter
    List<MemberAddressVo> memberAddressVos;

    //所有选中的购物项
    @Getter @Setter
    List<OrderItemVo> itemVos;

    //是否有库存
    @Getter @Setter
    Map<Long,Boolean> stocks;
    //发票信息...

    //优惠券...

    /**
     * 会员积分
     */
    @Getter @Setter
    private Integer integration;

    /**
     * 订单防重令牌
     * 前台多次提交订单时，用户订单防重
     */
    @Getter @Setter
    private String orderToken;

    //订单总额
    BigDecimal total;

    //应付的价格
    BigDecimal payPrice;

    //商品总件数
    public Integer getCount(){
        Integer i= 0;
        if (itemVos != null && itemVos.size() > 0){
            for (OrderItemVo itemVo : itemVos) {
                i += itemVo.getCount();
            }
        }

        return i;
    }

    public BigDecimal getTotal() {
        BigDecimal sum = new BigDecimal("0");
        if (itemVos != null && itemVos.size() > 0){
            for (OrderItemVo itemVo : itemVos) {
                BigDecimal multiply = itemVo.getPrice().multiply(new BigDecimal(itemVo.getCount().toString()));
                sum = sum.add(multiply);
            }
        }
        return sum;
    }

    public BigDecimal getPayPrice() {
        //没有优惠信息，应付价格为总额，有优惠时再减去优惠
        return getTotal();
    }
}
